package com.linkgie.galaxyframework.service.account;

import javax.validation.constraints.NotBlank;

import com.linkgie.galaxyframework.metadata.DataEntity;
import com.linkgie.galaxyframework.metadata.DataField;
import com.linkgie.galaxyframework.metadata.DataType;

@DataEntity
public class UserRegisterationVO implements UserRegisterationVI, EnterpriseDeveloperBackgroundInfoVI, DeveloperBackgroundInfoVI, UserRegisteration {
		
	/**
	 * 姓名；
	 */
	@NotBlank
	@DataType(contentType = "plain;maxLength=20")
	@DataField(name="姓名/昵称", order=0)
	private String name;

	/**
	 * 登录用户名；
	 */
	@NotBlank
	@DataType(contentType = "plain;maxLength=20;minLength=6")
	@DataField(name="登录用户名", order=1)
	private String username;
	
	/**
	 * 密码；
	 */
	@NotBlank
	@DataType(contentType = "password;doubleCheck=true;maxLength=20;minLength=6")
	@DataField(name="登录密码", order=2)
	private String password;


	
	/**
	 * 手机号码；
	 * 
	 * <p>
	 * 按照中国大陆运营商的号段进行了输入限制；
	 */
	@NotBlank
	@DataType(contentType = "telnum;leadingNum=[\"13\",\"145\",\"147\",\"149\",\"15\",\"162\",\"165\",\"166\",\"167\",\"17\",\"18\",\"19\"];length=11")
	@DataField(name="手机号码", order=4)
	private String mobileNumber;
	
	/**
	 * 手机验证凭证号；
	 */
	@NotBlank
	@DataField(name="手机验证凭证号", order=5, readonly = true)
	private String mobileVerifyCredential;
	
	/**
	 * 电子邮箱；<p>
	 * 
	 * 仅用于认证、找回密码等与账号相关的安全操作；
	 */
	@NotBlank
	@DataType(contentType = "email;maxLength=40")
	@DataField(name="电子邮箱", order=6)
	private String email;
	

	/**
	 * 开发者类型；
	 */
	@NotBlank
	@DataType(contentType = "email")
	@DataField(name="开发者类型", order=10)
	private DeveloperType developerType;
	

	/**
	 * 开发者在团队中的角色；
	 */
	@NotBlank
	@DataField(name="担任团队角色", order=11)
	private TeamRole teamRole;

	/**
	 * 开发者所在城市；
	 */
	@DataField(name="所在城市", order=12)
	private String city;
	
	/**
	 * 公司所属行业；<p>
	 * 只有企业开发者；
	 */
	@DataField(name="所属行业", order=21)
	private IndustryType companyIndustryType;

	/**
	 * 公司名称；<p>
	 * 只有企业开发者；
	 */
	@DataField(name="任职机构", order=22)
	private String company;

	/**
	 * 公司人数范围；<p>
	 * 只有企业开发者；
	 */
	@DataField(name="机构人员规模", order=23)
	private EmployeeSizeRange employeeSizeRange;




	@Override
	public String getName() {
		return name;
	}

	@Override
	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String getUsername() {
		return username;
	}

	@Override
	public void setUsername(String username) {
		this.username = username;
	}

	@Override
	public String getPassword() {
		return password;
	}

	@Override
	public void setPassword(String password) {
		this.password = password;
	}

	@Override
	public String getMobileNumber() {
		return mobileNumber;
	}

	@Override
	public void setMobileNumber(String mobileNumber) {
		this.mobileNumber = mobileNumber;
	}

	@Override
	public String getEmail() {
		return email;
	}

	@Override
	public void setEmail(String email) {
		this.email = email;
	}
	

	@Override
	public DeveloperType getDeveloperType() {
		return developerType;
	}

	@Override
	public void setDeveloperType(DeveloperType developerType) {
		this.developerType = developerType;
	}

	@Override
	public String getCompany() {
		return company;
	}

	@Override
	public void setCompany(String company) {
		this.company = company;
	}

	@Override
	public IndustryType getCompanyIndustryType() {
		return companyIndustryType;
	}

	@Override
	public void setCompanyIndustryType(IndustryType companyIndustryType) {
		this.companyIndustryType = companyIndustryType;
	}

	@Override
	public EmployeeSizeRange getEmployeeSizeRange() {
		return employeeSizeRange;
	}

	@Override
	public void setEmployeeSizeRange(EmployeeSizeRange employeeSizeRange) {
		this.employeeSizeRange = employeeSizeRange;
	}

	@Override
	public TeamRole getTeamRole() {
		return teamRole;
	}

	@Override
	public void setTeamRole(TeamRole teamRole) {
		this.teamRole = teamRole;
	}

	@Override
	public String getCity() {
		return city;
	}

	@Override
	public void setCity(String city) {
		this.city = city;
	}

	/**
	 * @return the mobileVerifyCredential
	 */
	public String getMobileVerifyCredential() {
		return mobileVerifyCredential;
	}

	/**
	 * @param mobileVerifyCredential the mobileVerifyCredential to set
	 */
	public void setMobileVerifyCredential(String mobileVerifyCredential) {
		this.mobileVerifyCredential = mobileVerifyCredential;
	}


	
}
